package com.anjubao.parking.municipal.parkinglot.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @author anjubao
 */
@ApiModel(value = "EntryLeaveDTO", description = "车辆出场信息")
@Data
@ToString
@Accessors(chain = true)
public class EntryLeaveDTO implements Serializable {

    /**
     * 车场编号
     */
    @NotBlank(message = "车场编号不能为空")
    @ApiModelProperty(value = "停车场编号", required = true)
    private String parkingLotCode;

    /**
     * 系统类型
     */
    @NotNull(message = "系统类型不能为空")
    @ApiModelProperty(value = "系统类型 1:封闭式停车系统 2:路内停车系统", required = true)
    private Integer systemType;

    /**
     * 停车场停车位编号
     */
    @NotBlank(message = "停车场停车位编号不能为空")
    @ApiModelProperty(value = "停车场停车位编号", required = true)
    private String parkingLotSlotCode;

    /**
     * 本地车场记录Id(本地系统需确保唯一)
     */
    @NotBlank(message = "本地车场记录Id不能为空")
    @ApiModelProperty(value = "本地停车场记录", required = true)
    private String localRecordId;

    /**
     * 云端记录编码(若是已上传入场记录，此字段必填，否则可空)
     */
    @ApiModelProperty(value = "进出停车场记录编号")
    private String parkingRecordCode;

    /**
     * 卡号，取卡入场
     */
    @ApiModelProperty(value = "卡号(取卡出入停车场)")
    private String cardId;

    /**
     * 车主姓名
     */
    @ApiModelProperty(value = "车主姓名")
    private String customerName;

    /**
     * 车主手机号码
     */
    @ApiModelProperty(value = "车主手机号码")
    private String customerPhone;

    /**
     * 入口名称
     */
    @ApiModelProperty(value = "停车场入口名称")
    private String enterPortName;

    /**
     * 入场图片
     */
    @ApiModelProperty(value = "进入停车场的图片")
    private String enterSnapshotUrl;

    /**
     * 入场时间
     */
    @NotNull(message = "入场时间不能为空")
    @ApiModelProperty(value = "进入停车场的时间")
    private LocalDateTime enterDateTime;

    /**
     * 停车类型(0：临时车 1：月卡车 3：访客车 4：预约车 5： 特殊车辆 6：其它车辆)
     */
    @NotNull(message = "停车类型不能为空")
    @ApiModelProperty(value = "停车的类型(0：临时车 1：月卡车 3：访客车 4：预约车 5： 特殊车辆 6：其它车辆)", required = true)
    private Integer parkingType;

    /**
     * 车牌号码（车牌识别）
     */
    @ApiModelProperty(value = "车牌号")
    private String plateNumber;

    /**
     * 车辆类型(1:小客车 2:大客车 3:货车)
     */
    @ApiModelProperty(value = "车辆的类型(1:小客车 2:大客车 3:货车)")
    private Integer vehicleType;

    /**
     * 出口名称
     */
    @ApiModelProperty(value = "停车场出口名称")
    private String leavePortName;

    /**
     * 出场图片url
     */
    @ApiModelProperty(value = "离开停车场的图片")
    private String leaveSnapshotUrl;

    /**
     * 车辆出场时间
     */
    @NotNull(message = "车辆出场时间不能为空")
    @ApiModelProperty(value = "车辆离开停车场时间", required = true)
    private LocalDateTime leaveTime;

    /**
     * 停车时长，单位：秒
     */
    @NotNull(message = "停车时长不能为空")
    @ApiModelProperty(value = "停车时长,单位:秒", required = true)
    private Integer parkingDuration;

    /**
     * 停车总费用=（实际支付金额+优惠金额），单位：分
     */
    @NotNull(message = "停车总费用不能为空")
    @ApiModelProperty(value = "停车总费用,（实际支付金额+优惠金额) 单位:分", required = true)
    private Integer feeTotal;

    /**
     * 实际支付金额，单位：分
     */
    @NotNull(message = "实际支付金额不能为空")
    @ApiModelProperty(value = "支付的金额,单位:分", required = true)
    private Integer paidTotal;

    /**
     * 优惠金额，单位：分
     */
    @NotNull(message = "优惠金额不能为空")
    @ApiModelProperty(value = "优惠金额,单位:分", required = true)
    private Integer discountTotal;

    /**
     * 充电费用（独立于停车总费用），单位：分
     */
    @NotNull(message = "充电费用不能为空")
    @ApiModelProperty(value = "充电费用,单位:分", required = true)
    private Integer batteryChargingDuration;

    /**
     * 是否充电
     */
    @NotNull(message = "是否充电不能为空")
    @ApiModelProperty(value = "是否充电 0：未充电，1:已充电", required = true)
    private Integer isBatteryCharged;

    /**
     * 路边停车方案
     * 默认值:-1 ; 地磁方案:0 ;视频桩方案: 1
     */
    @ApiModelProperty(value = "路边停车方案(默认值:-1 地磁方案:0 视频桩方案: 1)")
    private Integer parkingDetectType;


}
